package bintree.map_set.LeetCode;
//290. 单词规律

import java.util.HashMap;
import java.util.Map;

//用Map接口双映射解决问题
public class Num290_wordPattern {
    public boolean wordPattern(String pattern, String s) {
        //先将字符串按空格分割
        //dog cat cat dog
        String[] str = s.split(" ");
        if(pattern.length() != str.length){
            return false;
        }
        // 建立pattern和str关于数字的映射关系
        Map<String, Integer> map1 = new HashMap<>();//保存不同的值和对应的vale
        StringBuilder sb1 = new StringBuilder();//最后比较看这个字符串
        int conut = 1;//用来区别不同的数字
        for(String i : str){
            //判断这个新字符串在key中是否存在
            if(map1.containsKey(i)){
                sb1.append(map1.get(i));
            }else{
                //不存在就把这个字符添加到map中
                map1.put(i, conut);
                sb1.append(conut);
                conut ++;
            }

        }
        conut = 1;//初始化
        //abba
        String[] arr = pattern.split("");//安装每个字符分割
        Map<String, Integer> map2 = new HashMap<>();//保存不同的值和对应的vale
        StringBuilder sb2 = new StringBuilder();//最后比较看这个字符串
        for(String i : arr){
            //判断这个新字符串在key中是否存在
            if(map2.containsKey(i)){
                sb2.append(map2.get(i));
            }else{
                //不存在就把这个字符添加到map中
                map2.put(i, conut);
                sb2.append(conut);
                conut ++;
            }
        }
        String s1 = sb1.toString();
        String s2 = sb2.toString();
        return s1.equals(s2);
    }
}
